package com.demo.图.model;

import lombok.Getter;
import lombok.Setter;

import java.util.ArrayList;
import java.util.List;

/**
 * 自定义图顶点结构
 * @author cl
 */
@Getter
@Setter
public class Vertex<T> {
    /** 图本身具有的数据 */
    public T data;
    /** 图的入点数 */
    public int in;
    /** 图的出点数 */
    public int out;
    /** next 节点 */
    public List<Vertex<T>> nexts = new ArrayList<>();
    /** 关联的边 [->] */
    public List<Edge<T>> edges = new ArrayList<>();

    public Vertex() {}
    public Vertex(T data) {
        this.data = data;
    }

    public Vertex<T> addEdge(Edge<T> edge) {
        edges.add(edge);
        return this;
    }

    public Vertex<T> addNext(Vertex<T> edge) {
        nexts.add(edge);
        return this;
    }
}
